AI 写博客自动对接图床,图片上传一步到位

本文摘要背景这个博客之前发文章有个麻烦事——配图得自己上传到图床、复制链接、再贴到 Markdown 里。虽然流程不算复杂,但每篇文章都要来一遍,写多了也烦。趁着今天有空,把 AI 写博客的流程升级了一下:让它发文章时,把图片自动上传到图床、自动嵌入链接。写博客一条龙,舒服。准备工作对接其实分两步:图床 API 打通 + 脚本封装。图床用的是自建的"映舍"图床,后端 Java Spring Boot,有现...

cover

背景

这个博客之前发文章有个麻烦事——配图得自己上传到图床、复制链接、再贴到 Markdown 里。虽然流程不算复杂,但每篇文章都要来一遍,写多了也烦。

趁着今天有空,把 AI 写博客的流程升级了一下:让它发文章时,把图片自动上传到图床、自动嵌入链接。写博客一条龙,舒服。

准备工作

对接其实分两步:图床 API 打通 + 脚本封装。

图床

用的是自建的"映舍"图床,后端 Java Spring Boot,有现成的上传接口:

POST /api/v3/upload
Authorization: Bearer <token>
Content-Type: multipart/form-data
参数: file(图片文件)、params(json 字符串,可选)

在后台生成一个 sk- 开头的 API Token 即可调用。

思路

发文章时原本只需要执行 typecho-cli submit,现在在上一步加个图片上传环节:

  1. 检查正文中是否有本地图片或需要配图
  2. 调用图床 API 上传,返回公开 URL
  3. 把 URL 替换到正文的 Markdown 中
  4. 最后用 typecho-cli submit 提交

实现

写了一个图床 CLI 工具 image-hosting-cli,封装了 multipart 上传逻辑。

上传脚本

核心代码不复杂,就是构造 multipart/form-data 请求体,带文件字段和 params 参数(控制去重、水印、压缩、相册等):

def build_multipart_form(fields, files):
    boundary = "----" + uuid.uuid4().hex
    body = b""

    for key, value in fields.items():
        body += f"--{boundary}\r\nContent-Disposition: form-data; name=\"{key}\"\r\n\r\n{value}\r\n".encode()

    for key, (filepath, content_type) in files.items():
        filename = os.path.basename(filepath)
        with open(filepath, "rb") as f:
            file_data = f.read()
        body += f"--{boundary}\r\nContent-Disposition: form-data; name=\"{key}\"; filename=\"{filename}\"\r\n"
        body += f"Content-Type: {content_type}\r\n\r\n".encode()
        body += file_data + b"\r\n"

    body += f"--{boundary}--\r\n".encode()
    return body, boundary

用的时候一行搞定:

image-hosting-cli upload 截图.png
# → 返回 {"url": "https://s3.cndoor.vip/zpic-images/2026/07/30/xxx.jpg"}

配置

图床域名和 Token 跟博客配置放同一个文件:

{
  "domain": "https://blog.cndoor.vip",
  "token": "AaTP...",
  "image_hosting_domain": "https://img.cndoor.vip",
  "image_hosting_token": "sk-...",
  "image_hosting_album_id": 1
}

album_id=1 是专门放博客配图的相册,方便管理。

效果

现在发文章的流程变成了:

写正文 → 检查配图 → image-hosting-cli upload → 嵌入 URL → typecho-cli submit

全部自动化,我只需要说一句"发博客",剩下的 AI 搞定。

总结

图床和博客对接并不复杂,关键在于:

  1. 图床要有公开的 API——自建图床的话,后端框架基本都支持,Spring Boot、Go、Node 都有现成的文件上传处理
  2. CLI 封装——不依赖 curl,Python 原生就能搞定 multipart 上传,脚本可复用
  3. 配置统一——博客 Token 和图床 Token 放同一份配置文件,方便管理

这次升级后,写博客的效率又高了一截。下次再遇到类似的"就差一步"的流程,思路也是一样的:看有没有 API,有就打通,没有就写一个。

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~